﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using TCC_Hotel.Entidades;
using System.Data.SqlClient;
using TCC_Hotel.Entidades.Basicas;
using System.Configuration;

namespace TCC_Hotel.Repositorio
{
    public class ReservaRepositorio
    {
        ControleBancoDados controle = new ControleBancoDados();

        /// <summary>
        /// Cria o comando SQL e envia para um método inserir uma nova reserva nos bancos de dados
        /// </summary>
        /// <param name="reserva">Entidade reserva_particular</param>
        /// <returns>true se inseriu ou false se não</returns>
        public bool EfetuarReservaParticular(Reserva_Particular reserva)
        {
            //definição do comando sql
            string sql =
                "INSERT INTO Reservas_Particular VALUES ('" +
                reserva.CPF_Reserva + "', '" +
                reserva.RG_Reserva + "', '" +
                reserva.Nome_Reserva + "', '" +
                reserva.Telefone + "', '" +
                reserva.Nome_2 + "', '" +
                reserva.RG_2 + "','" +
                reserva.Nome_3 + "', '" +
                reserva.RG_3 + "','" +
                reserva.Nome_4 + "', '" +
                reserva.RG_4 + "','" +
                reserva.Nome_5 + "', '" +
                reserva.RG_5 + "','" +
                reserva.Data_Inicio + "', '" +
                reserva.Data_Final + "'," +
                reserva.Numero_Apartamento + ",'" +
                reserva.Cartao_Credito.Bandeira + "', '" +
                reserva.Cartao_Credito.Numero + "', '" +
                reserva.Cartao_Credito.Validade + "'," +
                reserva.Cartao_Credito.Codigo_Seguranca + ", '" +
                reserva.Cartao_Credito.Nome + "', " +
                0 + ")"; 

            //Método que escreve o comando sql nos bancos de dados
            return controle.EscreveBancoDados(sql);

        }

        /// <summary>
        /// Cria o comando SQL e envia para um método inserir uma nova reserva faturada nos bancos de dados
        /// </summary>
        /// <param name="reserva">Entidade Reserva_Faturada</param>
        /// <returns>true se inseriu ou false se não</returns>
        public bool EfetuarReservaFaturada(Reserva_Faturada reserva)
        {
            //definição do comando sql
            string sql =
                "INSERT INTO Reservas_Faturadas VALUES ('" +
                reserva.CNPJ_Reserva + "', '" +
                reserva.Nome_1 + "', '" +
                reserva.RG_1 + "','" +
                reserva.Nome_2 + "', '" +
                reserva.RG_2 + "','" +
                reserva.Nome_3 + "', '" +
                reserva.RG_3 + "','" +
                reserva.Nome_4 + "', '" +
                reserva.RG_4 + "','" +
                reserva.Nome_5 + "', '" +
                reserva.RG_5 + "','" +
                reserva.Data_Inicio + "', '" +
                reserva.Data_Final + "'," +
                reserva.Numero_Apartamento + "," +
                0 + ")"; 

            //Método que escreve o comando sql nos bancos de dados
            return controle.EscreveBancoDados(sql);

        }
        

        /// <summary>
        /// Recupera todas as resveras particulares do banco de dados
        /// </summary>       
        /// <returns>lista com as reservas recuperadas</returns>
        public List<Reserva_Particular> RecuperarReservasParticulares()
        {
            List<Reserva_Particular> resposta = null;
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoServidor"].ConnectionString);
            SqlDataReader reader;
            //definição do comando sql
            string sql =
                "SELECT * FROM Reservas_Particular";

            //Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão
            SqlCommand comando = new SqlCommand(sql, con);

            //--------tenta conectar no servidor externo-----------------------
            try
            {

                //abre a conexao
                con.Open();

                //Verifica se tem algum comando nao executado no servidor principal
                controle.verificaConsistencia();
                controle.verificaConsistenciaLocal();

                //executa a query
                reader = comando.ExecuteReader();

                //le os dados retornados e monta objeto reservas
                resposta = ListarReservasParticulares(reader);

                //fecha a conexao
                con.Close();


            }
            //--------Ocorreu excessao, conectar no servidor local-------------------------
            catch (SqlException e)
            {
                //erro referente a servidor inacessivel ou timeout ocorreu
                if (e.Number == 53 || e.Number == -2)
                {
                    //configura para apontar no servidor local
                    SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoLocal"].ConnectionString);
                    comando.Connection = con2;

                    //abre conexao
                    con2.Open();

                    //executa a query
                    reader = comando.ExecuteReader();
                   


                    //le os dados retornados e monta objeto reserva
                    resposta = ListarReservasParticulares(reader);


                    //fecha a conexao
                    con2.Close();
                }

            }
            finally
            {
                con.Close();
            }

            return resposta;


        }

        /// <summary>
        /// Recupera todas as resveras particulares de um apartamento do banco de dados
        /// </summary>       
        /// <returns>lista com as reservas recuperadas</returns>
        public List<Reserva_Particular> RecuperarReservasParticularesApartamento(int apartamento)
        {
            List<Reserva_Particular> resposta = null;
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoServidor"].ConnectionString);
            SqlDataReader reader;
            //definição do comando sql
            string sql =
                "SELECT * FROM Reservas_Particular WHERE Apartamento = " + apartamento;

            //Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão
            SqlCommand comando = new SqlCommand(sql, con);

            //--------tenta conectar no servidor externo-----------------------
            try
            {

                //abre a conexao
                con.Open();

                //Verifica se tem algum comando nao executado no servidor principal
                controle.verificaConsistencia();
                controle.verificaConsistenciaLocal();

                //executa a query
                reader = comando.ExecuteReader();

                //le os dados retornados e monta objeto reservas
                resposta = ListarReservasParticulares(reader);

                //fecha a conexao
                con.Close();


            }
            //--------Ocorreu excessao, conectar no servidor local-------------------------
            catch (SqlException e)
            {
                //erro referente a servidor inacessivel ou timeout ocorreu
                if (e.Number == 53 || e.Number == -2)
                {
                    //configura para apontar no servidor local
                    SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoLocal"].ConnectionString);
                    comando.Connection = con2;

                    //abre conexao
                    con2.Open();

                    //executa a query
                    reader = comando.ExecuteReader();



                    //le os dados retornados e monta objeto reserva
                    resposta = ListarReservasParticulares(reader);


                    //fecha a conexao
                    con2.Close();
                }

            }
            finally
            {
                con.Close();
            }

            return resposta;


        }

        /// <summary>
        /// Recupera todas as reservas faturadas de um apartamento do banco de dados
        /// </summary>       
        /// <returns>lista com as reservas recuperadas</returns>
        public List<Reserva_Faturada> RecuperarReservasFaturadasApartamento(int apartamento)
        {
            List<Reserva_Faturada> resposta = null;
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoServidor"].ConnectionString);
            SqlDataReader reader;
            //definição do comando sql
            string sql =
                "SELECT r.*, e.* FROM Reservas_Faturadas r " + 
                "inner join Empresas e on e.CNPJ = r.CNPJ_Reserva  WHERE Apartamento = " + apartamento;

            //Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão
            SqlCommand comando = new SqlCommand(sql, con);

            //--------tenta conectar no servidor externo-----------------------
            try
            {

                //abre a conexao
                con.Open();

                //Verifica se tem algum comando nao executado no servidor principal
                controle.verificaConsistencia();
                controle.verificaConsistenciaLocal();

                //executa a query
                reader = comando.ExecuteReader();

                //le os dados retornados e monta objeto reservas
                resposta = ListarReservasFaturadas(reader);

                //fecha a conexao
                con.Close();


            }
            //--------Ocorreu excessao, conectar no servidor local-------------------------
            catch (SqlException e)
            {
                //erro referente a servidor inacessivel ou timeout ocorreu
                if (e.Number == 53 || e.Number == -2)
                {
                    //configura para apontar no servidor local
                    SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoLocal"].ConnectionString);
                    comando.Connection = con2;

                    //abre conexao
                    con2.Open();

                    //executa a query
                    reader = comando.ExecuteReader();



                    //le os dados retornados e monta objeto reserva
                    resposta = ListarReservasFaturadas(reader);


                    //fecha a conexao
                    con2.Close();
                }

            }
            finally
            {
                con.Close();
            }

            return resposta;


        }


        /// <summary>
        /// Recupera todas as resveras faturadas do banco de dados
        /// </summary>       
        /// <returns>lista com as reservas recuperadas</returns>
        public List<Reserva_Faturada> RecuperarReservasFaturadas()
        {
            List<Reserva_Faturada> resposta = null;
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoServidor"].ConnectionString);
            SqlDataReader reader;
            //definição do comando sql
            string sql =
                "SELECT r.*, e.* FROM Reservas_Faturadas r " + 
                "inner join Empresas e on e.CNPJ = r.CNPJ_Reserva ";

            //Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão
            SqlCommand comando = new SqlCommand(sql, con);

            //--------tenta conectar no servidor externo-----------------------
            try
            {

                //abre a conexao
                con.Open();

                //Verifica se tem algum comando nao executado no servidor principal
                controle.verificaConsistencia();
                controle.verificaConsistenciaLocal();

                //executa a query
                reader = comando.ExecuteReader();

                //le os dados retornados e monta objeto reservas
                resposta = ListarReservasFaturadas(reader);

                //fecha a conexao
                con.Close();


            }
            //--------Ocorreu excessao, conectar no servidor local-------------------------
            catch (SqlException e)
            {
                //erro referente a servidor inacessivel ou timeout ocorreu
                if (e.Number == 53 || e.Number == -2)
                {
                    //configura para apontar no servidor local
                    SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoLocal"].ConnectionString);
                    comando.Connection = con2;

                    //abre conexao
                    con2.Open();

                    //executa a query
                    reader = comando.ExecuteReader();
                   


                    //le os dados retornados e monta objeto reserva
                    resposta = ListarReservasFaturadas(reader);


                    //fecha a conexao
                    con2.Close();
                }

            }
            finally
            {
                con.Close();
            }

            return resposta;


        }

        /// <summary>
        /// Recupera uma reserva especifica do banco de dados
        /// </summary>       
        /// <returns>Reserva recuperada</returns>
        public Reserva_Particular RecuperarDetalhesReservaParticular(int ID)
        {
            Reserva_Particular resposta = null;
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoServidor"].ConnectionString);
            SqlDataReader reader;
            //definição do comando sql
            string sql =
                "SELECT * FROM Reservas_Particular WHERE ID = " + ID;

            //Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão
            SqlCommand comando = new SqlCommand(sql, con);

            //--------tenta conectar no servidor externo-----------------------
            try
            {

                //abre a conexao
                con.Open();

                //Verifica se tem algum comando nao executado no servidor principal
                controle.verificaConsistencia();
                controle.verificaConsistenciaLocal();

                //executa a query
                reader = comando.ExecuteReader();

                //le os dados retornados e monta objeto reservas
                resposta = ListarReservasParticulares(reader).FirstOrDefault();

                //fecha a conexao
                con.Close();


            }
            //--------Ocorreu excessao, conectar no servidor local-------------------------
            catch (SqlException e)
            {
                //erro referente a servidor inacessivel ou timeout ocorreu
                if (e.Number == 53 || e.Number == -2)
                {
                    //configura para apontar no servidor local
                    SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoLocal"].ConnectionString);
                    comando.Connection = con2;

                    //abre conexao
                    con2.Open();

                    //executa a query
                    reader = comando.ExecuteReader();



                    //le os dados retornados e monta objeto reserva
                    resposta = ListarReservasParticulares(reader).FirstOrDefault();


                    //fecha a conexao
                    con2.Close();
                }

            }
            finally
            {
                con.Close();
            }

            return resposta;


        }

        /// <summary>
        /// Recupera uma reserva especifica do banco de dados
        /// </summary>       
        /// <returns>Reserva recuperada</returns>
        public Reserva_Faturada RecuperarDetalhesReservaFaturada(int ID)
        {
            Reserva_Faturada resposta = null;
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoServidor"].ConnectionString);
            SqlDataReader reader;
            //definição do comando sql
            string sql =
                "SELECT r.*, e.* FROM Reservas_Faturadas r " +
                "inner join Empresas e on e.CNPJ = r.CNPJ_Reserva  WHERE ID = " + ID;

            //Cria uma objeto do tipo comando passando como parametro a string sql e a string de conexão
            SqlCommand comando = new SqlCommand(sql, con);

            //--------tenta conectar no servidor externo-----------------------
            try
            {

                //abre a conexao
                con.Open();

                //Verifica se tem algum comando nao executado no servidor principal
                controle.verificaConsistencia();
                controle.verificaConsistenciaLocal();

                //executa a query
                reader = comando.ExecuteReader();

                //le os dados retornados e monta objeto reservas
                resposta = ListarReservasFaturadas(reader).FirstOrDefault();

                //fecha a conexao
                con.Close();


            }
            //--------Ocorreu excessao, conectar no servidor local-------------------------
            catch (SqlException e)
            {
                //erro referente a servidor inacessivel ou timeout ocorreu
                if (e.Number == 53 || e.Number == -2)
                {
                    //configura para apontar no servidor local
                    SqlConnection con2 = new SqlConnection(ConfigurationManager.ConnectionStrings["AplicacaoLocal"].ConnectionString);
                    comando.Connection = con2;

                    //abre conexao
                    con2.Open();

                    //executa a query
                    reader = comando.ExecuteReader();



                    //le os dados retornados e monta objeto reserva
                    resposta = ListarReservasFaturadas(reader).FirstOrDefault();


                    //fecha a conexao
                    con2.Close();
                }

            }
            finally
            {
                con.Close();
            }

            return resposta;


        }

        /// <summary>
        /// Lê dados da tabela correspondente através de um comando SQL os montando a lista que é retornada
        /// </summary>
        public List<Reserva_Particular> ListarReservasParticulares(SqlDataReader reader)
        {
            List<Reserva_Particular> listaResposta = new List<Reserva_Particular>();

            //le os dados retornados e monta objeto reserva
            while (reader.Read())
            {
                listaResposta.Add(new Reserva_Particular()
                {
                    ID = Convert.ToInt32(reader["ID"]),
                    Nome_Reserva = Convert.ToString(reader["Nome_Reserva"]),
                    CPF_Reserva = Convert.ToString(reader["CPF_Reserva"]),
                    RG_Reserva = Convert.ToString(reader["RG_Reserva"]),
                    Telefone = Convert.ToString(reader["Telefone"]),
                    Nome_2 = Convert.ToString(reader["Nome_2"]),
                    RG_2 = Convert.ToString(reader["RG_2"]),
                    Nome_3 = Convert.ToString(reader["Nome_3"]),
                    RG_3 = Convert.ToString(reader["RG_3"]),
                    Nome_4 = Convert.ToString(reader["Nome_4"]),
                    RG_4 = Convert.ToString(reader["RG_4"]),
                    Nome_5 = Convert.ToString(reader["Nome_5"]),
                    RG_5 = Convert.ToString(reader["RG_5"]),
                    Data_Inicio = Convert.ToDateTime(reader["Data_Inicio"]),
                    Data_Final = Convert.ToDateTime(reader["Data_Fim"]),
                    Numero_Apartamento = Convert.ToInt32(reader["Apartamento"]),

                    Cartao_Credito = new Cartao()
                    {
                        Bandeira = Convert.ToString(reader["Bandeira_Cartao"]),
                        Nome = Convert.ToString(reader["Nome_Cartao"]),
                        Validade = Convert.ToDateTime(reader["Validade_Cartao"]),
                        Numero = Convert.ToString(reader["Numero_Cartao"]),
                        Codigo_Seguranca = Convert.ToInt32(reader["Codigo_Cartao"]),

                    },
                    NoHotel = Convert.ToBoolean(reader["NoHotel"]),

                   
                });

            }
            return listaResposta;


        }

        /// <summary>
        /// Lê dados da tabela correspondente através de um comando SQL os montando a lista que é retornada
        /// </summary>
        public List<Reserva_Faturada> ListarReservasFaturadas(SqlDataReader reader)
        {
            List<Reserva_Faturada> listaResposta = new List<Reserva_Faturada>();

            //le os dados retornados e monta objeto reserva
            while (reader.Read())
            {
                listaResposta.Add(new Reserva_Faturada()
                {
                    ID = Convert.ToInt32(reader["ID"]),
                    Empresa_Reserva = Convert.ToString(reader["Nome"]),
                    CNPJ_Reserva = Convert.ToString(reader["CNPJ_Reserva"]),
                    Email_Reserva = Convert.ToString(reader["Email"]),
                    Telefone = Convert.ToString(reader["Telefone1"]),
                    Nome_1 = Convert.ToString(reader["Nome_1"]),
                    RG_1 = Convert.ToString(reader["RG_1"]),
                    Nome_2 = Convert.ToString(reader["Nome_2"]),
                    RG_2 = Convert.ToString(reader["RG_2"]),
                    Nome_3 = Convert.ToString(reader["Nome_3"]),
                    RG_3 = Convert.ToString(reader["RG_3"]),
                    Nome_4 = Convert.ToString(reader["Nome_4"]),
                    RG_4 = Convert.ToString(reader["RG_4"]),
                    Nome_5 = Convert.ToString(reader["Nome_5"]),
                    RG_5 = Convert.ToString(reader["RG_5"]),
                    Data_Inicio = Convert.ToDateTime(reader["Data_Inicio"]),
                    Data_Final = Convert.ToDateTime(reader["Data_Fim"]),
                    Numero_Apartamento = Convert.ToInt32(reader["Apartamento"]),
                    NoHotel = Convert.ToBoolean(reader["NoHotel"]),

                });

            }
            return listaResposta;


        }

        /// <summary>
        /// Cacela uma reserva de hospede particular
        /// </summary>
        /// <param name="CPF">ID da reserva particular</param>
        /// <returns>true se cancelou ou false se não</returns>
        public bool CancelarReservaParticular(int ID)
        {

            //definição do comando sql
            string sql =
                "DELETE FROM Reservas_Particular WHERE ID = " + ID + "";

            //Método que escreve o comando sql nos bancos de dados
            return controle.EscreveBancoDados(sql);

        }

        /// <summary>
        /// Cacelar reserva antiga de hospede particular
        /// </summary>
        /// <param name="CPF">Data limite</param>
        /// <returns>true se cancelou ou false se não</returns>
        public void CancelarReservasAntigasParticular(DateTime DataLimite)
        {

            //definição do comando sql
            string sql =
                "set dateformat dmy " + " DELETE FROM Reservas_Particular WHERE ((CAST(Data_Fim as DateTime) < CAST('" + DataLimite + "' as DateTime)) AND NoHotel = 0)";

            //Método que escreve o comando sql nos bancos de dados
            controle.EscreveBancoDados(sql);

        }

        /// <summary>
        /// Cacelar reserva antiga de hospede Faturada
        /// </summary>
        /// <param name="CPF">Data limite</param>
        /// <returns>true se cancelou ou false se não</returns>
        public void CancelarReservasAntigasFaturada(DateTime DataLimite)
        {
           
            //definição do comando sql
            string sql =
                "set dateformat dmy " + "DELETE FROM Reservas_Faturadas WHERE ((CAST(Data_Fim as DateTime) < CAST('" + DataLimite + "' as DateTime)) AND NoHotel = 0)";

            //Método que escreve o comando sql nos bancos de dados
            controle.EscreveBancoDados(sql);

        }

        /// <summary>
        /// Cacela uma reserva de hospede faturado
        /// </summary>
        /// <param name="CPF">ID da reserva Faturada</param>
        /// <returns>true se cancelou ou false se não</returns>
        public bool CancelarReservaFaturada(int ID)
        {

            //definição do comando sql
            string sql =
                "DELETE FROM Reservas_Faturadas WHERE ID = " + ID + "";

            //Método que escreve o comando sql nos bancos de dados
            return controle.EscreveBancoDados(sql);

        }

        /// <summary>
        /// Cria o comando SQL e envia para um método editar uma reserva nos bancos de dados
        /// </summary>
        /// <param name="reserva">Entidade reserva_particular</param>
        /// <returns>true se editou ou false se não</returns>
        public bool EditarReservaParticular(Reserva_Particular reserva, int ID)
        {
            //definição do comando sql
            string sql =
            "UPDATE Reservas_Particular SET " +
            "CPF_Reserva = '" + reserva.CPF_Reserva + "', " +
            "RG_Reserva = '" + reserva.RG_Reserva + "', " +
            "Nome_Reserva = '" + reserva.Nome_Reserva + "', " +
            "Telefone = '" + reserva.Telefone + "', " +
            "Nome_2 = '" + reserva.Nome_2 + "', " +
            "RG_2 = '" + reserva.RG_2 + "', " +
            "Nome_3 = '" + reserva.Nome_3 + "', " +
            "RG_3 = '" + reserva.RG_3 + "', " +
            "Nome_4 = '" + reserva.Nome_4 + "', " +
            "RG_4 = '" + reserva.RG_4 + "', " +
            "Nome_5 = '" + reserva.Nome_5 + "', " +
            "RG_5 = '" + reserva.RG_5 + "', " +
            "Data_Inicio = '" + reserva.Data_Inicio + "', " +
            "Data_Fim = '" + reserva.Data_Final + "', " +
            "Apartamento = " + reserva.Numero_Apartamento + ", " +
            "Bandeira_Cartao = '" + reserva.Cartao_Credito.Bandeira + "', " +
            "Numero_Cartao = '" + reserva.Cartao_Credito.Numero + "', " +
            "Validade_Cartao = '" + reserva.Cartao_Credito.Validade + "', " +
            "Codigo_Cartao = " + reserva.Cartao_Credito.Codigo_Seguranca + ", " +
            "Nome_Cartao = '" + reserva.Cartao_Credito.Nome + "' WHERE ID =" + ID + "";                        
          

            //Método que escreve o comando sql nos bancos de dados
            return controle.EscreveBancoDados(sql);

        }

        /// <summary>
        /// Cria o comando SQL e envia para um método editar uma reserva nos bancos de dados
        /// </summary>
        /// <param name="reserva">Entidade Reserva Faturada</param>
        /// <returns>true se editou ou false se não</returns>
        public bool EditarReservaFaturada(Reserva_Faturada reserva, int ID)
        {
            //definição do comando sql
            string sql =
            "UPDATE Reservas_Faturadas SET " +
            "Nome_1 = '" + reserva.Nome_1 + "', " +
            "RG_1 = '" + reserva.RG_1 + "', " +
            "Nome_2 = '" + reserva.Nome_2 + "', " +
            "RG_2 = '" + reserva.RG_2 + "', " +
            "Nome_3 = '" + reserva.Nome_3 + "', " +
            "RG_3 = '" + reserva.RG_3 + "', " +
            "Nome_4 = '" + reserva.Nome_4 + "', " +
            "RG_4 = '" + reserva.RG_4 + "', " +
            "Nome_5 = '" + reserva.Nome_5 + "', " +
            "RG_5 = '" + reserva.RG_5  + "' WHERE ID =" + ID + "";


            //Método que escreve o comando sql nos bancos de dados
            return controle.EscreveBancoDados(sql);

        }


        /// <summary>
        /// Cria o comando SQL e envia para um método editar uma reserva nos bancos de dados
        /// </summary>
        /// <param name="reserva">Entidade reserva_particular</param>
        /// <returns>true se editou ou false se não</returns>
        public bool CheckReservaParticular(bool status, int ID)
        {
            //definição do comando sql
            string sql =
            "UPDATE Reservas_Particular SET " +
            "NoHotel = '" + status + "' WHERE ID =" + ID + "";


            //Método que escreve o comando sql nos bancos de dados
            return controle.EscreveBancoDados(sql);

        }

        /// <summary>
        /// Cria o comando SQL e envia para um método editar uma reserva nos bancos de dados
        /// </summary>
        /// <param name="reserva">Entidade Reserva Faturada</param>
        /// <returns>true se editou ou false se não</returns>
        public bool CheckReservaFaturada(bool status, int ID)
        {
            //definição do comando sql
            string sql =
            "UPDATE Reservas_Faturadas SET " +
            "NoHotel = '" + status + "' WHERE ID =" + ID + "";


            //Método que escreve o comando sql nos bancos de dados
            return controle.EscreveBancoDados(sql);

        }


    }
}